"""
题目背景：

    在分析时间序列数据，如股票价格每日变化、实验中传感器读数的波动时，一个常见的分析任务是找到“最大连续子序列和”（Maximum Subarray Sum）。这可以帮你找到一段时间内累计收益最高或信号累计强度最大的区间。

题目描述：

    给定一个整数列表 changes，其中每个元素代表一天（或一个时间单位）的变化量（可正可负）。请编写一个函数 max_subarray_sum，计算并返回这个列表中连续子序列的最大和。

要求：

    1.你必须使用动态规划的思想来解决此问题。

    2.请使用 functools.reduce 来实现这个算法，以函数式编程的风格来表达状态的转移。

测试用例：

输入	预期输出
[-2, 1, -3, 4, -1, 2, 1, -5, 4]	6
[1, 2, 3, 4, 5]	15
[-1, -2, -3, -4, -5]	-1
[5, 4, -1, 7, 8]	23
[1]	1
[-5]	-5
[]	0
[0, 0, 0]	0
[1, -1, 1, -1, 1]	1
[2, -3, 2, -1, 2]	3
[-2, -1]	-1



"""